package dataStructure.interfaces;

import java.util.AbstractList;
import java.util.Comparator;
import java.util.List;

public interface Chain<E> extends Iterable<E>{
    boolean addFirst(E e);
    boolean addLast(E e);
    boolean add(E position, E e);
    boolean add(int index, E e);
    boolean setFirst(E e);
    boolean setLast(E e);
    boolean set(E position, E e);
    boolean set(int index, E e);
    E removeFirst();
    E removeLast();
    E remove(E position);
    E remove(int index);
    E getFirst();
    E getLast();
    E get(int index);
    boolean isEmpty();
    boolean contains(E e);
    int size();
    Chain<E> subChain(int start, int end);
    Chain<E> subChain(int start);
    E[] toArray();
    List<E> toList(Class<? extends List> listClass);
}
